迴圈這個部分我覺得差別比較少,最大的差別可能就是Ruby的寫法很簡潔,可以馬上執行腦袋中的迴圈XD
另外下文有昨天沒提到 map 用法(Golang),這裡就簡單補充一下
通常在宣告時都會寫成這樣
tmp := map[string]int{"a": 0, "b": 1}
這個寫方就相當於Ruby的Hash寫法
tmp = {"a": 0, "b": 1}
不過 map 的裡面的型別要先決定好,他不像Ruby可以隨意更換後面 Value 的型態,
但若真的不確定如上 map 後面的 int 是何種型別,可以使用 interface{} 去接型別,
在程式之後再去判斷他的型別就好,詳細就可以參考這次鐵人賽的大大們介紹。
就舉我最常用的兩個迴圈寫法
因為Ruby的關係,所以不用先預設count值,會自動從0開始計數,不過我還是會習慣先宣告。
> count = 0
> for count in 0..3
> puts "count is: #{count}"
> end
count is: 0
count is: 1
count is: 2
count is: 3
each大概是我寫Ruby以來最常用的了,常常抓到的東西都是Hash,
不管要存db還是要做什麼,用==each==就對啦~
> tmp = {"a": "apple", "b": "banana", "c": "cat"}
=> {:a=>"apple", :b=>"banana", :c=>"cat"}
> tmp.each do |k, v|
> puts "key: #{k} => value: #{v}"
> end
key: a => value: apple
key: b => value: banana
key: c => value: cat
Golang只要一個for
就可以做到其他語言的各種迴圈功能了!
下述三個是我這幾個月來學習最常用的迴圈寫法。
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
// output: 1...10
若要執行==無窮迴圈==把 count <= 10 拿掉就可以跑到電腦壞掉囉(誤)
count := 1
for count <= 10 {
fmt.Println(count)
count += 1
}
// output: 1...10
有了 range 這個用法,讓我對於轉換語言終於沒有那麼痛苦了XD
tmp := map[string]string{"a": "apple", "b": "banana"}
for k, v := range tmp {
fmt.Printf("%s -> %s\n", k, v)
}
// output:
// a -> apple
// b -> banana
看了那麼多用法,還是覺得Ruby的 each 最好用,而且他還有延伸用法是 each_with_index
,
如果是判斷陣列需要抓他的座位(忽然不知道怎麼稱呼),就可以使用這個,484超牛的呀!